import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace PersonInfoApi {
  /** 人员信息 */
  export interface PersonInfo {
    id?: number; // 人员ID
    communityId?: number; // 社区ID
    userId?: number; // 关联会员ID(可为空，表示非会员)
    relationType?: number; // 与会员关系：0本人 1家人 2朋友 3其他
    realName: string; // 真实姓名
    idCard?: string; // 身份证号
    phone?: string; // 手机号
    gender?: number; // 性别：0未知 1男 2女
    birthday?: Date; // 生日
    age?: number; // 年龄
    education?: string; // 学历
    occupation?: string; // 职业
    address?: string; // 地址
    avatar?: string; // 头像
    personType?: number; // 人员类型：1普通居民 2志愿者 3师资 4社区干部
    volunteerLevel?: number; // 志愿者等级：0非志愿者 1一星 2二星 3三星 4四星 5五星
    volunteerTitle?: string; // 志愿者称号
    totalServiceHours?: number; // 累计服务时长(小时)
    totalActivities?: number; // 累计参与活动数
    status?: number; // 状态：0停用 1启用
    remark?: string; // 备注
    createTime?: Date; // 创建时间
  }
}

/** 查询人员信息分页 */
export function getPersonInfoPage(params: PageParam) {
  return requestClient.get<PageResult<PersonInfoApi.PersonInfo>>(
    '/cmt/person-info/page',
    { params },
  );
}

/** 查询人员信息详情 */
export function getPersonInfo(id: number) {
  return requestClient.get<PersonInfoApi.PersonInfo>(
    `/cmt/person-info/get?id=${id}`,
  );
}

/** 新增人员信息 */
export function createPersonInfo(data: PersonInfoApi.PersonInfo) {
  return requestClient.post('/cmt/person-info/create', data);
}

/** 修改人员信息 */
export function updatePersonInfo(data: PersonInfoApi.PersonInfo) {
  return requestClient.put('/cmt/person-info/update', data);
}

/** 删除人员信息 */
export function deletePersonInfo(id: number) {
  return requestClient.delete(`/cmt/person-info/delete?id=${id}`);
}

/** 批量删除人员信息 */
export function deletePersonInfoList(ids: number[]) {
  return requestClient.delete(
    `/cmt/person-info/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出人员信息 */
export function exportPersonInfo(params: any) {
  return requestClient.download('/cmt/person-info/export-excel', { params });
}

/** 获取人员信息选项列表(用于下拉选择) */
export function getPersonInfoOptions() {
  return requestClient.get<PageResult<PersonInfoApi.PersonInfo>>(
    '/cmt/person-info/page',
    { params: { pageNo: -1, pageSize: 10 } },
  );
}
